package labox.innovation.gameserver.script;

import labox.innovation.gameserver.Announcements;
import labox.innovation.gameserver.GameTimeController;
import labox.innovation.gameserver.datatables.CharNameTable;
import labox.innovation.gameserver.datatables.PlayerTemplateTable;
import labox.innovation.gameserver.datatables.ClanTable;
import labox.innovation.gameserver.datatables.ItemTable;
import labox.innovation.gameserver.datatables.NpcTemplateTable;
import labox.innovation.gameserver.datatables.SkillTable;
import labox.innovation.gameserver.datatables.SkillTreeTable;
import labox.innovation.gameserver.datatables.TeleportLocationTable;
import labox.innovation.gameserver.idfactory.IdFactory;
import labox.innovation.gameserver.model.FuzeWorld;

/**
 * @author Luis Arias
 * 
 *         TODO To change the template for this generated type comment go to
 *         Window - Preferences - Java - Code Style - Code Templates
 */
public interface EngineInterface {
	// * keep the references of Singletons to prevent garbage collection
	public CharNameTable charNametable = CharNameTable.getInstance();

	public IdFactory idFactory = IdFactory.getInstance();

	public ItemTable itemTable = ItemTable.getInstance();

	public SkillTable skillTable = SkillTable.getInstance();

	public SkillTreeTable skillTreeTable = SkillTreeTable.getInstance();

	public PlayerTemplateTable charTemplates = PlayerTemplateTable.getInstance();

	public ClanTable clanTable = ClanTable.getInstance();

	public NpcTemplateTable npcTable = NpcTemplateTable.getInstance();

	public TeleportLocationTable teleTable = TeleportLocationTable.getInstance();

	public FuzeWorld world = FuzeWorld.getInstance();

	public GameTimeController gameTimeController = GameTimeController.getInstance();

	public Announcements announcements = Announcements.getInstance();

	// public ArrayList getAllPlayers();
	// public Player getPlayer(String characterName);
	public void addQuestDrop(int npcID, int itemID, int min, int max, int chance, String questID, String[] states);

	public void addEventDrop(int[] items, int[] count, double chance, DateRange range);

	public void onPlayerLogin(String[] message, DateRange range);

}
